<?php

namespace Lib\Utils;

class MenusUtils{
	
	
	
	static function ordenarMenusConSubmenus($menus){
		
		$reverse = '';
		
		$aux = array();
	
		//recibimos una select con los menus que puede visualizar el usuario,ordenamos los menus segun su relacion
		foreach($menus as $key=>$menu){
			if($menu->parent == 0){
				$aux[$menu->id] = $menu; //añadimos cada array que corresponde a un menu superior,en otra array donde colocaremos cada submenu junto al correspondiente menu.
				unset($menus[$key]); //elimina de la array general, cada array correspodiente a los menus principales que ya metimos en $return
			}
			
			if($menu->id_gestor == '0'){
				$reverse = false;
			}
		}
		
		foreach($menus as $submenu){
			$aux[$submenu->parent]->submenus[] = $submenu; //añadimos cada array(submenu) vinculada (campo bbdd parent) a su menu superior correspondiente
		}
		
		if($reverse == false){
		    return $aux;	
		}else{
		    return array_reverse($aux);	
		}
		

	}
	
	/*
	 * Monta el listado que se utiliza en el editor de menus
	 * 
	 */
	static function montarListadoNestableMenus($menus){
		
		$string = '';
		
		foreach($menus as $menu){
			
			if(!empty($menu->submenus)){
				$string .= MenusUtils::nuevaLineaNestable($menu->id,$menu->nombre,true); //si contiene submenus sera desplegable
			}else{
				$string .= MenusUtils::nuevaLineaNestable($menu->id,$menu->nombre,false); //si menu no contiene submenus, no sera deplegable
			}
			
			
			
            if(!empty($menu->submenus)){ 
            	
            	$string .= '<ol class="dd-list">';

            	foreach($menu->submenus as $submenu){
            		
            		$string .= MenusUtils::nuevaLineaNestable($submenu->id,$submenu->nombre,false);
            		
            	}
            	
            	$string .= '</ol>';
            	
            }           
		}
		
		$string .= '</li>';
		return $string;
	}
	
	private static function nuevaLineaNestable($id,$texto,$desplegable){
		
		$string = '';
		
		if($desplegable == true){
			$string .= '<li class="dd-item dd3-item dd-collapsed" data-id="'.$id.'">
						<button type="button" data-action="collapse" style="display: none;">Collapse</button>
  						<button type="button" data-action="expand" style="display: block;">Expand</button>
					    ';
		}else{
			$string .= '<li class="dd-item dd3-item " data-id="'.$id.'">';
		}
		
		
		//return $string .= '				
                   // <div class="dd-handle dd3-handle"></div>
                  //  <div class="dd3-content edicion_menus">'.$texto.'</div>';
         return $string .= '<div class="dd-handle dd3-handle"></div>
                    <div class="dd3-content "><a id="submenu'.$id.'" class="edicion_menus editable editable-click"
											data-type="text" data-pk="1" data-placement="right" data-title="Edicion"
											data-placeholder="Required" >'.$texto.'</a></div>';
	}
	
	static function cambioOrdenSubMenus($post){
		
		$post = json_decode(stripslashes($post),true);

		$queryString = array();
		
		foreach($post as $row){
			
			$menu = new \stdClass();
			$menu->id = $row['id_menu'];
			$menu->nombre = $row['nombre_menu'];
			$menu->orden = $row['orden'];
			
			$queryString[] = MenusUtils::montarQueryUpdateMenu($menu);
			
			if(!empty($row['submenus'])){
				foreach ($row['submenus'] as $submenu){
					$aux = new \stdClass();
					$aux->id = $submenu['id_submenu'];
					$aux->nombre = $submenu['nombre_submenu'];
					$aux->parent = $row['id_menu'];
					$aux->orden = $submenu['orden'];
					$queryString[] = MenusUtils::montarQueryUpdateSubMenus($aux);
				}
			}
		}
		return $queryString;
	}

	private static function montarQueryUpdateMenu($row){
		$queryString = "UPDATE menus SET nombre = '".$row->nombre."',orden = ".$row->orden." WHERE id = ".$row->id."; ";
		return $queryString;
	}
	
	private static function montarQueryUpdateSubMenus($row){
		$queryString = "UPDATE menus SET nombre = '".$row->nombre."',parent = ".$row->parent.",orden = ".$row->orden." WHERE id = ".$row->id."; ";
		return $queryString;
		
	}

}

?>